package com.zyj.test.month1.day8;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Yijia Zhang
 * @create 2024-05-15 22:47
 */
public class code0017 {
    public static Map<Character, List<String>> map = new HashMap<>();
    public List<String> res = new ArrayList<>();
    static {
        ArrayList<String> list2 = new ArrayList<>();
        list2.add("a");
        list2.add("b");
        list2.add("c");
        map.put('2', list2);
        ArrayList<String> list3 = new ArrayList<>();
        list3.add("d");
        list3.add("e");
        list3.add("f");
        map.put('3', list3);
        ArrayList<String> list4 = new ArrayList<>();
        list4.add("g");
        list4.add("h");
        list4.add("i");
        map.put('4', list4);
        ArrayList<String> list5 = new ArrayList<>();
        list5.add("j");
        list5.add("k");
        list5.add("l");
        map.put('5', list5);
        ArrayList<String> list6 = new ArrayList<>();
        list6.add("m");
        list6.add("n");
        list6.add("o");
        map.put('6', list6);
        ArrayList<String> list7 = new ArrayList<>();
        list7.add("p");
        list7.add("q");
        list7.add("r");
        list7.add("s");
        map.put('7', list7);
        ArrayList<String> list8 = new ArrayList<>();
        list8.add("t");
        list8.add("u");
        list8.add("v");
        map.put('8', list8);
        ArrayList<String> list9 = new ArrayList<>();
        list9.add("w");
        list9.add("x");
        list9.add("y");
        list9.add("z");
        map.put('9', list9);
    }
    public List<String> letterCombinations(String digits) {
        backTrace(0, new StringBuilder(digits.length()), digits);
        return res;
    }

    private void backTrace(int idx, StringBuilder sb, String digits) {
        if (idx == digits.length()) {
            res.add(sb.toString());
            return;
        }
        List<String> list = map.get(digits.charAt(idx));
        for (String s : list) {
            sb.append(s);
            backTrace(idx + 1, sb, digits);
            sb.deleteCharAt(sb.length() - 1);
        }
    }

    public static void main(String[] args) {
        code0017 code0017 = new code0017();
        System.out.println(code0017.letterCombinations("234"));
    }
}
